// (function(){
//立即执行函数   可以保证作用域 名字的唯一性
// })()



(function () {
    //父类
    class Father {
        name: string;
        age: number;
        constructor(name: string, age: number) {
            this.name = name;
            this.age = age;
        }
        say() {
            console.log('我是父');
        }
    }
    /*
        继承
        因为想让多个子类同时拥有父类的属性及方法 所以采用继承
        继承后 之类就会拥有父类相同的内容
        若子类中 定义的方法与父类相同  则覆盖父类该方法 称该方法为方法中重写
        若想添加新的方法  则在子类中自行添加即可
    */

    //子类
    class child extends Father {
        say() {
            console.log(this.name, "方法重写");
        }
        call() {
            console.log('新方法');
        }
    }

    //调用
    // let p=new Father('wo',23);
    // p.say();
    // 子类调用
    let c = new child('wode', 22)
    c.say()
    c.call()
})()